# -*- coding: utf-8 -*-
'''
Created on 9/10/2013

@author: Edwar
'''

from django.core.management.base import BaseCommand, CommandError
from django.core.mail import send_mail, EmailMultiAlternatives
from app.models import Configuracion, Notificaciones, Categoria, Producto, FacturaCompraItem, Inventario 
from datetime import date, timedelta
import calendar

class Command(BaseCommand):
    help = "Enviar por email los productos vencidos"


    def handle(self, *args, **options):
        datos = {}
        texto = ""
        destino = ""
        i  = 0
        notificados = 0
        inv = []
        
        configuracion = Configuracion.objects.all()
        for config in configuracion:
            i = 0
            texto = ""
            
            notificaciones = Notificaciones.objects.filter(configuracion_id = config.id)
            if len(notificaciones) > 0:
                notificaciones = Notificaciones.objects.get(configuracion_id = config.id)
                notificados = notificaciones.correo.split(",")
                fecha = date.today() + timedelta(days=30)
                
                categorias = Categoria.objects.filter(configuracion_id=config.id)
                for categoria in categorias:
                    productos = Producto.objects.filter(configuracion_id=config.id, categoria_id = categoria.id)
                    if categoria.dias_vencimiento>0:
                        fecha = date.today() + timedelta(days=categoria.dias_vencimiento)
                        items = FacturaCompraItem.objects.filter(configuracion_id=config.id, producto__in=productos, fecha_vencimiento__lte=fecha)
                        inventarios = Inventario.objects.filter(item__in=items, cantidad__gte=1)
                        for inv in inventarios:
                            i += 1
                            texto = u"%s <tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>" \
                                %(texto, inv.item.producto.cum, inv.item.producto.nombre, inv.item.lote, inv.item.factura_compra.numero, inv.sede.nombre, inv.cantidad, inv.item.fecha_vencimiento)
            else:
                notificaciones = {}
                
            if i>0:
                texto = "<table><tr><th>Codigo o Cum</th><th>Nombre</th><th>Lote</th><th>Factura</th><th>Sede</th><th>Unidades</th><th>Vence en:</th></tr>%s</table>" %(texto)
                
                for notif in notificados:
                    if len(notif)>1:
                        subject, from_email, to = u"Ítems próximos a vencer.%s." %(config.nombre), 'admin@cristabit.com', notif
                        destino = "%s %s " %(destino, notif)
                        text_content = 'This is an important message.'
                        msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
                        msg.attach_alternative(texto, "text/html")
                        msg.send()
                texto = "El mensaje se ha enviado correctamente a %s destinatarios. %s" %(len(notificados), destino)
        self.stdout.write('Enviado satisfactoriamente a "%s"' % texto)    